package xyhoo.springframework.beans.factory.xml;

import org.w3c.dom.Document;
import org.xml.sax.EntityResolver;
import org.xml.sax.ErrorHandler;
import org.xml.sax.InputSource;
import xyhoo.springframework.util.xml.XmlValidationModeDetector;

/**
 * 用于加载XML的策略接口
 */
public interface DocumentLoader {

    /**
     * 从{@link InputSource source}中加载文档
     *
     * @param inputSource    被加载的XML文件源
     * @param entityResolver 解析外部实体（如 DTD、XSD 文件） 的 实体解析器（Entity Resolver）
     * @param errorHandler   用于在文档加载期间报告任何错误。
     * @param validationMode 验证模式：{@link XmlValidationModeDetector#VALIDATION_DTD DTD}或{@link XmlValidationModeDetector#VALIDATION_XSD XSD}
     * @param namespaceAware 是否提供对XML命名空间的支持
     * @return
     * @throws Exception
     */
    Document loadDocument(InputSource inputSource, EntityResolver entityResolver,
                          ErrorHandler errorHandler, int validationMode, boolean namespaceAware) throws Exception;
}
